package dk.muldbjergskolen.db;

import java.sql.*;
import java.util.ArrayList;

import dk.muldbjergskolen.model.*;

public class LokaleDB {

	// fields
	private Connection con;

	public LokaleDB() {
		con = ConnectionDB.getInstance().getDBcon();
	}

	// Finder og returnerer lokalerne i en ArrayListe.
	public ArrayList<Lokale> findLokaler() {
		ArrayList<Lokale> aL = new ArrayList<Lokale>();
		String query = "Select * from Lokale";
		Lokale l = null;

		try {
			Statement stmt = con.createStatement();
			stmt.setQueryTimeout(5);
			ResultSet rs = stmt.executeQuery(query);

			while (rs.next()) {
				l = buildLokale(rs);
				aL.add(l);
			}
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return aL;
	}

	public Lokale getLokale(int lokaleId) {
		String query = "Select id, navn, placering, skemaId from Lokale WHERE id = "
				+ lokaleId;
		Lokale l = null;

		try {
			Statement stmt = con.createStatement();
			stmt.setQueryTimeout(5);
			ResultSet rs = stmt.executeQuery(query);

			if (rs.next()) {
				l = buildLokale(rs);
			}
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return l;
	}

	// Laver et lokale udfra databasen.
	public Lokale buildLokale(ResultSet result) {
		Lokale l = null;

		try {
			l = new Lokale(result.getString("navn"),
					result.getString("placering"));
			l.setId(result.getInt("id"));
		} catch (Exception e) {
			System.out.println("Fejl i opbygningen af Lokaler.");
		}

		return l;
	}

	// Finder et lokale og returnere det.
	public Lokale findLokale(String navn) {
		String query = "select * from Lokale where navn = '" + navn + "'";
		Lokale l = null;
		try {
			Statement stmt = con.createStatement();
			stmt.setQueryTimeout(5);
			ResultSet rs = stmt.executeQuery(query);

			if (rs.next()) {
				l = buildLokale(rs);
			}

			return l;
		} catch (Exception e) {
			System.out.println("fejl lokale ikke fundet.");
		}
		return l;
	}

	// opretter et lokale
	public void opretLokale(Lokale l) throws SQLException {
		String query = "insert into Lokale (navn, placering) values ('"
				+ l.getNavn() + "' , '" + l.getPlacering() + "')";

		try {
			Statement stmt = con.createStatement();
			stmt.setQueryTimeout(5);
			stmt.executeUpdate(query);
		} catch (SQLException e) {
			throw e;
		}
	}

	// updater lokaler ud fra id
	public int updateLokale(Lokale l, int glId) {
		Lokale lObj = l;
		int rc = -1;

		String query = "UPDATE Lokale SET navn='" + lObj.getNavn()
				+ "' ,Placering ='" + lObj.getPlacering() + "' where id = '"
				+ glId + "'";

		System.out.println("Update query:" + query);
		try { // update Lokale
			Statement stmt = con.createStatement();
			stmt.setQueryTimeout(5);
			rc = stmt.executeUpdate(query);

			stmt.close();
		}// slut try
		catch (Exception e) {
			System.out.println("Update exception in Lokale db: " + e);
		}
		return (rc);
	};
}
